package com.ddpt.platform.common.base.session;

import com.ddpt.platform.common.base.BaseEntity;

import java.util.Collection;

/**
 * 数据权限统一控制
 */
public class CurrentSessionUserPermission extends BaseEntity {

    //线程变量
    private static final ThreadLocal<AccessDataPermission> currentPermission = new ThreadLocal<>();

    /**
     * 设置当前登陆用户的数据权限
     * @param type  权限类型
     * @param userId    当前用户id
     * @param insId     当前用户可访问的机构id集合
     */
    public static void set(AccessDataPermission.DataPermissionType type, Long userId, Collection<Long> insId){
        AccessDataPermission permission = new AccessDataPermission();
        permission.setType(type);
        permission.setUserId(userId);
        permission.setInsList(insId);
        permission.setEnabled(true);
        currentPermission.set(permission);
    }

    /**
     * 关闭数据权限
     */
    public static void shutdown(){
        AccessDataPermission permission = currentPermission.get();
        if(permission != null){
            permission.setEnabled(false);
        }
    }

    /**
     * 开启数据权限
     */
    public static void enable(){
        AccessDataPermission permission = currentPermission.get();
        if(permission != null){
            permission.setEnabled(true);
            permission.setManual(true);
        }
    }

    /**
     * 获取当前登陆用户的数据权限
     */
    public static AccessDataPermission get(){
        return currentPermission.get();
    }

    /**
     * 清除当前用户数据
     */
    public static void clear(){
        currentPermission.remove();
    }
}
